/**
 1. 位运算
         指的是1个二进制数据的每一位来参与运算
         位运算的前提：是这个数必须是1个二进制
     注意：
         1. 参与运算的二进制数据必须是补码的形式
         2. 位运算的结果也是二进制的补码形式
     
 2. 按位与 &
     参与按位与的两个是，如果都为1 结果为1，只要有一位为0，结果为0
     
     任何数按位与1的结果 这个数的最低位
     偶数的最低位是0
     奇数的最低位是1
 
 3. 按位或 |
    参与按位或的两个是，如果有一位为1 结果为1，只有两位都为0，结果为0
 
 4. 按位取反
    将二进制数的每一位取反
 
 5. 按位左移 <<
    参与按位左移的二进制数据，向左移动指定的位数，低位不够补0，高位溢出就丢弃
     注意：
     1）左移运算可能会改变正负性
     2）一个数左移n位，就相当于这个数乘以2的n次方
 
 6. 按位右移 >>
    向左移动指定的位数，低位溢出就丢弃，高位不够补符号位
    注意：
    1）右移运算不会改变正负性
    2）一个数右移n位，就相当于这个数除以2的n次方
 */
/**
 指定
 
 short 修饰的int 类型的变量在内存中只占据2个字节，16位
 范围：-32768~32767
 %hd
 
 long 修饰的int 类型的变量在内存中只占据8个字节，64位
 %ld
 
 unsigned 修饰符
 最高位不表示符号位，而是参与到数据的表示之中
 %u
 int、short、long、long long这些变量都是最高位表示符号位，实际上表示的数据少了1位，因为最高位用来表示符号位了
 
 signed 最高位来表示符号位，默认是就是有符号数
 
 char在内存中存储的形式是二进制ASCAII码的补码
 */

#include <stdio.h>

int main(int argc, const char * argv[]) {
    
    return 0;
}
